package com.dc.designPattern._2_factory._1_simplefactory.pizza;

/**
 * Description: Pizza 抽象类
 *
 * @author: gdc
 * @date: 2021/3/7
 * @version 1.0
 */
public abstract class Pizza {
	/**
	 * 披萨名字
	 */
	protected String name;

	/**
	 * 模板方法，用于执行业务
	 */
	public final void execute(){
		prepare();
		bake();
		cut();
		box();
	}

	/**
	 * step 1 准备原材料, 不同的披萨不一样，因此，我们做成抽象方法
	 */
	protected abstract void prepare();

	/**
	 * step 2 烘烤
	 */
	protected void bake() {
		System.out.println(name + " baking;");
	}

	/**
	 * step 3 切片
	 */
	protected void cut() {
		System.out.println(name + " cutting;");
	}

	/**
	 * step 4 打包
	 */
	protected void box() {
		System.out.println(name + " boxing;");
	}

	public void setName(String name) {
		this.name = name;
	}
}
